Copyright □ 1999, by Professor Jong-Hwan Kim, Korea Advanced Institute of Science and Technology (KAIST).  All rights reserved. Reproduction or translation of any part of this work is unlawful. Request for permission or further information should be addressed to Professor Jong-Hwan Kim at <johkim@vivaldi.kaist.ac.kr> or <Tel: +82-42-869-3448>.

Prof. Jong-Hwan Kim	Intelligent Control Lab, KAIST

6.비전 시스템

로봇축구경기를 위해서는 각 로봇의 위치와 방향, 그리고 공의 위치 정보가 필수적이다. 이러한 정보를 얻기 위해 경기장으로부터 2m 위에 설치된 카메라와 비전보드로 구성된 비전 시스템을 이용할 수 있다. 공은 오렌지색 골프공이고 각 팀은 3.5cm□3.5cm 크기 이상의 파랑색 또는 노랑색의 팀색을 로봇 위에 가지고 있어야 한다. 이 팀색을 이용해 상대팀과 자기팀을 구별한다. 각 팀의 유니폼에는 오렌지색, 노랑색, 그리고 파랑색을 제외한 다른 색들을 이용해 로봇들을 구별하기 위한 식별색을 사용하기도 한다.

로봇축구에서 비전 시스템은 물체의 위치 계산에 대한 정밀도와 함께 빠른 처리속도가 매우 중요하다. 보통 상용의 비전보드는 초당 30 프레임 (frame)의 화상을 제공한다. 즉, 약 33ms 마다 새로운 화상이 저장된다고 할 수 있으며, 로봇축구시스템의 여러 가지 전술이나 제어 알고리즘, 통신 시간, 화상자료 등의 처리시간이 33ms를 넘지 않는다면, 1초에 최대 30번의 명령이나 정보를 각 로봇에게 전달할 수 있다. 이 경우에, 전체 로봇축구 시스템의 주파수는 30Hz라고 할 수 있다. 공과 로봇의 속도가 매우 빠르고 동적인 상황에서, 비전 시스템의 실시간 화상처리는 매우 중요하다고 할 수 있다.

본 장에서는 로봇축구에서 물체들의 위치와 방향을 계산하는 데 필요한 내용을 중심으로 컴퓨터 비전에 관한 기본적인 내용을 소개하고, 실제 로봇축구팀들에서 사용한 예들을 설명한다.

6.1 컴퓨터 비전

컴퓨터 비전 (computer vision) 또는 머신 비전 (machine vision)이란 2차원 화상 자료로부터 여러 가지 유용한 정보들을 얻는 것으로서, 의료분야에서의 CT 단층 촬영, 이동로봇에서의 스테레오 비전, 위성자료에 대한 기상 예측 등에서 사용된다.

그림 6.1에 비전 시스템의 구성을 나타내었다.  광학계는 3차원 장면을 2차원으로 투사 (projection)시킨다. 이미지 센서는 빛의 밝기를 전기적인 신호로 변환하는 것으로, 사용되는 센서로는 CCD (Charge Coupled Device)를 이용한 카메라가 보편적으로 사용된다. 카메라는 광학계와 이미지 센서로 구성된다. 프레임 그래버 (frame grabber, 화상캡쳐보드)는 아날로그 신호를 디지탈 신호로 바꾸어 화상 신호의 한 프레임을 메모리에 저장하는 장치이다. 컴퓨터는 프레임 그래버로부터 얻어진 화상을 처리하기 위한 여러 가지 알고리즘을 수행하고 그 처리 결과 등을 저장한다.

6.2 화상 (image)

실제 물리적 화상은 연속적이지만, 디지탈 컴퓨터에서 이 화상을 다루기 위해서는 2차원 화상을 바둑판 모양으로 나누어 유한개의 격자 (grid)를 만들고, 각 격자의 중심에서 그 격자의 농담값 (intensity)을 취한다. 이는 표본화 (sampling)와 양자화 (quantization)의 과정으로 요약된다.

표본화란 공간에서 연속적인 화상을 이산적으로 유한개의 격자로 분할하는 것을 말한다. 표본화를 통해 얻어진 각각의 격자를 화소 (pixel)라고 한다. 즉, 디지탈 컴퓨터에서 화상은 화소로 구성된 2차원 배열이라고 할 수 있다. 그림 6.2는 [eqn: m TIMES n] 화상 배열 (image array)로 구성된 화상을 나타낸다. 표본화율 (sampling rate)은 디지탈 화상이 갖는 화소의 수를 결정하므로, 이것은 화상 분해도 (image resolution)에 직결된다. 한편, 각 화소에서의 농담값은 본래 연속적이지만, 디지탈 컴퓨터에서는 이것을 이산적인 정수 값으로 나타내게 되는 데 이것을 양자화라고 한다. 즉, 부호없는 8-bit 정수 (1 byte)로 양자화를 수행할 경우, [eqn: 2^8 = 256]이므로 각 화소는 [0, 255] 범위 내의 정수 값을 갖는다. 양자화는 한 화상에서 각 화소의 농담을 나타내기 위해 사용되는 농담값의 수를 결정한다. 양자화를 위해 1 bit만이 사용될 경우, 농담값은 0 또는 1 값을 갖으며, 이렇게 만들어진 화상을 2진화상이라고 한다. 칼라 화상의 경우, 적([eqn: R``]), 녹([eqn: G``]), 청([eqn: B``])의 세 가지 성분을 각각에 대하여 8비트로 양자화하면, [eqn: 2^8 TIMES 2^8 times 2^8] = [eqn: 1.677 times 10^7] 가지의 색을 나타낼 수 있다

.

6.3 색 공간 (Color Space)

로봇축구에서는 각 팀에 노랑색 또는 파랑색의 고유칼라가 부여된다. 이러한 팀색깔을 이용해 상대팀을 구별하며, 로봇의 위치와 방향을 알기 위해 몇 가지 다른 색을 사용하기도 한다.

임의의 한 색은 3개의 원색들 (primary color)의 조합으로 표현될 수 있다. 예를 들면, TV 수상기의 색은 적색 ([eqn: R``]), 녹색 ([eqn: G``]), 청색 ([eqn: B``])의 조합으로 표현된다. 색을 가능한 정량적으로 표현하기 위해 색상 (hue), 명도 (휘도, brightness 또는 luminance), 채도 (saturation)라는 색의 3요소를 정의한다. 색상은 여러 가지 색의 종류를 나타내고, 명도는 밝고 어두운 정도를 나타내며, 같은 색이라도 색의 짙고 옅음을 나타내는 것이 채도이다.

색을 나타내는 형식에는 용도에 따라 여러 가지가 있다. 화상에서의 칼라모델로는 [eqn: RGB``]가 있으며, 비디오에서의 칼라모델로는 [eqn: YUV``] 등이 있다. 상용인 것들 중에서 다수의 프레임 그래버들이 [eqn: RGB``] 형식의 값을 주며, 6.5.1절에서 예로서 설명할 프레임 그래버는 [eqn: YUV``]값을 준다. 이러한 칼라 모델들 사이에는 다음과 같은 관계가 있다.

[eqn: BMATRIX { {Y~} # {I~} # {Q~}} = BMATRIX { { 0.299}& {0.587 }& {0.114 }# { 0.596}& {-0.275 }& {-0.321 }# { 0.212}& {-0.528 }& {0.311 } } BMATRIX { { R~}# {G ~}# {B~ } }]	(6.1)

[eqn: BMATRIX { {Y~} # {U~} # {V~}} = BMATRIX { { 0.299}& {0.587 }& {0.114 }# { -0.169}& {-0.331 }& {0.500 }# { 0.500}& {-0.419 }& {-0.081 } } BMATRIX { { R~}# {G ~}# {B ~} }]	(6.2)

아래에서 설명할 비전 시스템의 예들에서는 [eqn: YUV``]형식이 사용된다.

6.4 2진화상 처리

2진화상은 농담 값이 0 또는 1로서, 256개의 농담값 또는 칼라를 갖는 화상에 비해 그 데이터 양이 적으므로 빠른 계산 시간과 적은 메모리 비용의 효과를 얻을 수 있다. 대신 화상에 대한 상세한 정보를 나타낼 수는 없다. 하지만, 2진화상 처리 기법들은 컴퓨터 비전에서의 기본 내용이다.

6.4.1 임계값 처리 (Thresholding)

2진화상을 만들기 위해서는 임계값 처리 과정이 필요하다. 6.2절에서 언급했듯이, 양자화 과정을 통해 얻어진 각 화소는 주어진 범위의 정수 값을 갖게 된다. 임계값 처리란 특정 임계값 범위 내에 있는 화소값은 1, 그 밖에 있는 것은 0으로 2진화하는 것을 말한다. 예를 들어, 그림 6.3과 같이 원래의 농담화상과 그것의 히스토그램이 주어졌다고 하자. 밝은 정사각형 부분을 나타내는 화소들의 농담값은 히스토그램의 분포에서 알 수 있듯이 165의 농담값을 중심으로 대략 140에서 180 범위 내에 존재한다. 농담값이 135 이상인 화소는 1, 135 미만인 화소는 0으로 새롭게 화소값을 정한다면, 정사각형에 해당하는 화소들은 1값을 갖고, 어두운 배경을 나타내는 화소들은 0값을 갖는다. 즉, 정사각형에 대한 위치 정보를 유지하면서 화상을 저장하기 위한 메모리의 크기는 줄일 수 있다.

일반적으로 다음과 같은 2진화 방법들이 있다. [eqn: F``[i,j]]는 원래 화상의  i 행, j 열 화소의 농담값을 나타내고, [eqn: F_T [i,j]]는 이것을 임계값  처리한 농담값을 나타낸다.  [eqn: T``], [eqn: T_1`], [eqn: T_2`]는 임계값이고,  다음과 같이 [eqn: F_T [i,j]]에 대한 방법들을 정의할 수 있다

.

(a) 농담 화상	(b) 히스토그램

그림 6.3

□[eqn: F_T [i,j] = cases{ & 1~ if~ F``[i,j] >= T``# & 0 ~otherwise.}]	(6.3)

농담레벨이 [eqn: T``]값 이상이면 1, 그렇지 않으면 0이다.

□ [eqn: F_T [i,j] = cases{ & 1~ if~T_1 <= F[i,j] <= T_2# & 0 ~otherwise.}]	(6.4)

농담레벨이 [eqn: T_1`]이상이고 [eqn: T_2`]이하이면 1이고, 그렇지 않으면 0이다.

이로부터, 2진화상의 i 행, j 열 화소의 농담값을[eqn: B``[i,j]]라고 하면, [eqn: B``[i,j] ~=~ F_T [i,j]]의 관계가 있다.

그림 6.4는 임계값 처리의 예로서, 주어진 농담화상에 대해 식 (6.3)의 임계값  처리 방법 ([eqn: T=48])과 식 (6.4)의 임계값 처리 방법 ([eqn: T_1 = 21 , ~ T_2 = 48])을 적용한 결과들이다.

그림 6.4   임계값 처리

6.4.2 기하학적 특징들

물체들의 크기나 위치, 방향 등의 비교적 단순한 특징들을 가지고도 물체를 인식할 수 있다. 이러한 물체 인식을 위하여 [eqn: m times n] 크기의 2진화상 [eqn: B``[i,j]]가 주어졌다고 가정한다.

□ 크기

물체의 크기를 나타내는 면적 [eqn: A]는 다음 식에서 구할 수 있으며, 이것은 물체를 나타내는 화소들의 개수와 같다.

[eqn: A = SUM from { i=1 } to n SUM from { j=1 } to m B[i,j]]	(6.5)

□ 위치

2진화상에서 물체의 중심 위치는 그 물체의 면적 중심과 같으므로, 다음과 같이 면적 중심법을 이용해 물체의 위치 ([eqn: BAR x``], [eqn: BAR y``])를 구할 수 있다.

[eqn: bar x = { SUM from { i=1 } to n SUM from { j=1 } to m j B[i,j] } over A]  ,   [eqn: bar y = { SUM from { i=1 } to n SUM from { j=1 } to m i B[i,j] } over A]	(6.6)

□ 방향

물체의 방향이 유일하게 정의되기 위해서는 물체가 긴 모양이어야 한다. 그림 6.5에 이 물체의 예를 나타내었다. 주어진 2진화상 [eqn: B``[i,j]]에 대해, 직선에 대한 최소자승 정합법 (least-squares fit of line)을 사용하여 그 2진 화상에 있는 물체에 대응되는 점들에 정합하는 직선을 구한다. [eqn: x]축으로부터 이 직선까지의 각도를 그 물체의 방향 [eqn: theta``]라고 정의한다.

[eqn: rho` =` x cos theta_o `+ `y sin theta_o``]	(6.7)

[eqn: theta_o``]는 원점으로부터 직선까지의 수직선이 [eqn: x``]축과 이루는 각이고, [eqn: rho``]는 원점과 직선사이의 최단 거리이다.

[eqn: rho = bar{x} `cos theta_o + ~bar{y}` sin theta_o]	(6.8)

여기서, [eqn: (bar x , `` bar y `)]는 물체의 중심위치를 나타낸다. 여기서, [eqn: {(tilde {x}} _{ij} ,{tilde{y}}_{ij} `) = (x_{ij}-bar x ,`` y_{ij}-bar y `)]라고 정의한다. 여기서 매개변수들 [eqn: a, ``b, ``c] 는 다음과 같이 정의된다.

[eqn: a = sum from {i=1} to {n} sum from {j=1} to {m} {{(tilde{x}}_{ij})}^2 B`[i,j]]	(6.9)

[eqn: b = 2 sum from {i=1} to {n} sum from {j=1} to {m} {tilde{x}}_ij}{tilde{y}}_ij ``B`[i,j]]	(6.10)

[eqn: c = sum from {i=1} to {n} sum from {j=1} to {m} {{(tilde{y}}_{ij})}^2 B`[i,j]]	(6.11)

그러면 [eqn: theta_o``]는 다음과 같다.

[eqn: tan `2theta_o = b over {a-c}]	(6.12)

위 식으로부터 탄젠트 함수의 역함수를 이용하면 [eqn: theta_o``]의 값을 직접 얻을 수 있으며, 물체의 방향[eqn: theta]는 [eqn: theta_o + pi over 2]로 얻어진다. 즉,

그림 .6 이웃화소 예

[eqn: theta &=& theta_o + pi over 2 # & = & 1 over 2 tan^{-1}left ({b over a-c} right) + pi over 2]	(6.13)

그리고, 편의상, [eqn: 0 <=`` theta `` < ``2 pi] 가 되도록 [eqn: theta]를 조정한다. 만약 [eqn: b = 0]이고 [eqn: a=c]이면, 물체의 유일한 방향은 정의되지 않는다.

6.4.3 라벨링

물체의 위치나 방향 외에 각각의 물체를 구분하기 위하여, 화소들이 서로 연결되어 있는가 또는 떨어져 있는가를 알아야 한다. 한 화소가 다른 화소들에 연결되어 있는 지의 여부를 알기 위하여, 그림 6.6에서와 같이 4-이웃화소(neighbor)와 8-이웃화소를 정의한다. [eqn: [i, j]] 위치에 있는 화소의 4-이웃화소는 [eqn: [i+1,j]], [eqn: [i-1,j]], [eqn: [i,j+1]], [eqn: [i,j-1]]에 있는 화소들로 구성되며, 8-이웃화소는 4-이웃화소 및 [eqn: [i+1,j+1]], [eqn: [i+1,j-1]], [eqn: [i-1,j+1]], [eqn: [i-1,j-1]]에 있는 화소들로 구성된다. 이 [eqn: [i, j]] 위치에 있는 화소의 4-이웃화소를 4-연결도 (connectivity)의 이웃화소들이라 하고,  8-이웃화소를 8-연결도의 이웃화소들이라고 한다.

일반적으로, 화상 배열에서 서로 이웃하여 있는 화소들의 집합을 연결성분 (connected component)이라고 부른다. 머신 비전에서 가장 흔한 연산 중의 하나는 주어진 화상에서 이러한 연결성분들을 찾는 것이다. 연결성분들에 속한 화소들은 어떤 한 물체를 나타낼 가능성이 크기 때문이다. 한 연결성분에 같은 라벨 (번호; 정수값)을 붙이고, 다른 연결성분에는 다른 번호를 붙이는 처리를 라벨링이라고 한다. 2진화상의 라벨링의 예가 그림 6.7에 보여진다. 그림 6.7 (a)는 임계값처리를 통해 얻어진 2진화상으로서, 어두운 색으로 처리된 화소들은 1의 값을 가지며,  이외의 화소들은 0의 값을 가지며, 4개의 연결 성분들이 있다. 그림 6.7 (b)는 적절한 라벨링 과정을 통해 각각의 연결성분이 1, 2, 3, 4의 라벨을 갖는 화상을 보여준다. 이렇게 라벨링된 화상으로부터 얻어진 4개의 연결성분들 각각은 어떤 물체를 나타낼 수 있는 가능성이 있으며, 각각의 연결성분에 대해  6.4.2절에서 설명한 크기, 위치, 방향 등의 특징들을 계산할 수 있다.

화상에 있는 모든 연결성분들을 찾고, 같은 연결성분에 존재하는 모든 화소들에 하나의 고유한 라벨을 붙여주는 알고리즘을 성분 라벨링 알고리즘 (component labeling algorithm)이라고 하며, 회귀 (recursive)와 순차 (sequential) 알고리즘이 있다. 회귀 알고리즘은 직렬 컴퓨팅에서는 그 계산 시간이 오래 걸리므로, 병렬 컴퓨터에서 많이 사용된다. 순차알고리즘은 회귀 알고리즘에 비해 계산시간이 짧고 메모리가 적게 들며, 주어진 화상에 대해 2번의 전체 조사 (scanning)만으로 계산이 끝난다.

그림 6.7 라벨링

여기서는 순차 알고리즘만을 설명한다.

□ 4-연결도를 사용한 순차 연결성분 알고리즘 (Sequential Connected Components Algorithm Using 4-connectivity)

1) 왼쪽에서 오른쪽으로, 위에서 아래로 화상을 조사한다.

2) 만약 [eqn: \[ i, j \]] 화소가 1값을 갖으면, 위쪽 ([eqn: [ i-1, j]])과 왼쪽 ([eqn: [ i, j-1]]) 이웃화소들에 대해,

2.1) 두 이웃화소들 중에서 하나만이 라벨을 가지고 있으면, 그 라벨을 [eqn: \[ i, j \]] 화소에 부여한다.

2.2) 두 이웃화소들이 똑같은 라벨을 가지고 있다면, 그 라벨을 [eqn: \[ i, j \]] 화소에 부여한다.

2.3) 두 이웃화소들이 서로 다른 라벨을 가지고 있다면, 위쪽 이웃화소의 라벨을 부여하고,  준비된 등가 테이블에 두 라벨들을 등가 라벨들로 기록한다.

2.4) 두 이웃화소들이 라벨을 가지고 있지 않다면, 새로운 라벨을 부여하고, 등가 테이블에 이 라벨을 기록한다.

3) 라벨이 부여되지 않은 화소들이 남아 있으면, 단계 2)로 간다.

4) 등가 테이블에서 각각의 등가 집합에 대해 가장 낮은 라벨을 찾는다.

5) 화상을 조사하여, 각 라벨을 등가 집합에서의 가장 낮은 라벨로 바꾼다.

여기서 등가 라벨이라 함은 같은 연결 성분들에 대한 서로 다른 라벨들을 말하며, 이 등가 라벨들의 집합을 등가 집합이라고 한다. 그리고 등가 집합을 원소로 하는 집합을 등가 테이블이라고 한다.

이 알고리즘은 전체 화상에 대해 두 번의 조사 과정이 필요하다. 첫 번째 조사에서는 부분 영역들을 얻고 부분 영역들간의 연결성을 알아낸다: 과정 1, 2, 3. 두 번째 조사에서는 등가인 라벨들을 검사하여 다시 라벨링을 한다. 위의 과정을 pseudo 코드로 나타내면 다음과 같다.

k=1;

If p[r][c] = 1

{

if(p[r-1][c] = 1 && p[r][c-1] = 0)

label[r][c] = label[r-1][c];

if(p[r-1][c] = 0 && p[r][c-1] = 1)

label[r][c] = label[r][c-1];

if(p[r-1][c] = 1 && p[r][c-1] = 1)

label[r][c] = label[r-1][c];

if(p[r-1][c] = 0 && p[r][c-1] = 0)

{

label[r][c] = k;

k = k+1;

}

}

순차 연결성분 알고리즘의 예를 그림 6.8에 나타내었다. 1), 2), 3)의 과정을 통해 얻어진 등가 테이블은 [eqn: ET = \{ ES_1 , ES_2 \}]이고, 각각의 등가 집합은  [eqn: ES_1 = \{ 1, 3 \}], [eqn: ES_2 = \{ 2, 4 \}]이다. 즉, 등가 테이블 [eqn: ET]는 2개의 등가 집합 [eqn: ES_1], [eqn: ES_2]로 구성되고, [eqn: ES_1]은 등가 라벨들의 집합으로서 라벨 1과 3이 서로 등가 라벨임을 뜻한다. 마찬가지로 [eqn: ES_2]의 라벨 2와 4는 서로 등가 라벨이다. 4)의 과정을 통해 각 등가 집합에서 가장 낮은 라벨은 각각 1과 2이다. 5)의 과정을 거치면, 라벨 3을 갖고 있던 화소들은 모두 라벨 1로 바뀌게 되고, 라벨 4를 가지고 있던 화소들은 모두 라벨 2로 바뀐다. 따라서, 라벨링 알고리즘을 적용한 뒤의 화소들은 라벨 1, 2 중의 하나를 갖게 되고 2개의 연결성분이 얻어진다.

(a) 원래의 2진화상 (b) 과정 3 후의 결과 (c) 과정 5 후의 결과

그림 6.8 순차 연결성분 알고리즘

6.4.4 크기 필터링 (Size Filtering)

카메라의 해상도나 조명의 불균일성 등에 의해, 2진화상에는 잡음이 있을 수 있다. 이러한 잡음은 보통 불규칙적으로 발생하므로 잡음에 해당하는 연결성분들의 화소의 수는 작은 값을 갖는다. 라벨링 후에 얻어진 연결성분들에 대해, 어느 화소 수 미만인 연결성분들을 제거하는 것을 크기 필터링이라고 한다. 그 예로서 알파벳 i에 대한 2진화상과 크기 필터링의 결과가 그림 6.9에 주어진다. 여기서 연결 성분들의 화소수가 10개 미만인 것은 모두 0으로 함으로써 잡음을 제거할 수 있다. 이 방법은 잡음에 의해 생기는 화소들을 제거하기 위한 단순하면서도 아주 효율적인 방법이다.

그림 6.9 크기 필터링 (T=10)

9.5 로봇의 위치와 방향 계산의 실례들

다음은 실제 로봇축구팀에서 사용된 비전 시스템의 구성과 사용한 방법들을 설명한다. 사용한 비전보드는 비교적 저가의 상용 멀티미디어 보드로서, 1초에 30프레임의 처리능력을 가지며 실제 해상도는 80□240 [eqn: (320/4 times 240)]으로서 상대적으로 낮은 해상도이다. 사용한 비전 보드는 1초에 30 프레임을 저장할 수 있으므로, 물체의 위치를 찾는 데 33ms보다 짧은 시간이 걸려야 한다. 33ms이상의 처리 시간이 걸린다면, 비전 보드가 할 수 있는 30Hz의 처리율보다 떨어지며, 그만큼 로봇들에게 줄 수 있는 정보량이 감소하고 시간지연이 증가된다.

6.5.1 비전 시스템의 구성

비전 시스템은 이미 설명한 바와 같이 카메라와 프레임 그래버, 컴퓨터로 구성되며, 실제 예로서 설명할 시스템의 구성은 다음과 같다.

(1) 프레임 그래버 : 미디어캠프7 Plus

- 두인전자

- 입력 : 비디오 1 / 비디오 2 / SVHS / TV

- 동화상 캡쳐: 320□240,  30 프레임/초

- 비디오 신호 : NTSC / PAL 자동선택

- 데이터 저장 형식 : [eqn: YUV``] (4:1:1)

(2) 카메라 : PULNiX TMC-7 (칼라 CCD 카메라)

- 768(H)□494(V) resolution

- Controllable shutter speed : 1/30 - 1/10,000 초

(3) 컴퓨터 : 펜티엄 PC

사용한 비전보드의 [eqn: YUV]는 4:1:1의 형식이다. 이것은 수평으로 연속하여 연결된 4개의 화소에 대해, [eqn: Y``]값은 각 화소에 대해 다른 값을 갖는 반면, [eqn: U``]와 [eqn: V``]는 4개의 화소들이 모두 같은 값을 갖는다. 따라서, 실제 해상도는 320□240이 아니라 80□240에 해당한다.

6.5.2 물체의 중심위치 구하기

로봇축구 경기장 내의 로봇들의 위치와 방향을 찾기 위해, 각 로봇들은 특정한 색깔들의 조합이나 무늬를 이용한 유니폼을 사용하게 된다. 본 절에서는 이러한 유니폼을 구성하는 각각의 색깔의 중심 위치를 찾는 방법에 대해 설명한다. 각 색깔의 중심 위치를 얻을 수 있다면, 이 색깔들 사이의 거리나 위치 관계를 얻을 수 있으므로, 각 로봇의 위치와 방향을 계산할 수 있다. 특정 색깔을 갖는 물체의 위치를 구하기 위해서, 앞에서 설명한 임계값 처리(6.4.1 절), 면적 중심법(6.4.2 절), 라벨링 기법(6.4.3 절) 등이 사용된다.

전체적인 과정은 다음과 같이 요약된다.

□ 대상 물체의 색의 각 성분 ([eqn: Y, U, V``])의 범위 결정

□ 임계값 처리

□ 그룹핑 (라벨링)

□ 크기 필터링

□ 면적 중심법을 이용한 위치 계산

그림 6.11에 그룹핑과 크기필터링에 대한 예를 보여준다. 21×13의 크기의 화상배열에 4개의 그룹들이 있다. 그리고, 각 그룹의 대표화소의 좌표가 표시되어 있다. 임계거리는 6 화소, 크기 필터의 임계 화소수는 5 화소로 정하였다. 이 경우, 그룹 4는 3개의 화소만을 가지고 있으므로, 잡음으로 간주하여 무시된다. 즉, 그룹 1, 2, 3에 대해서만 위치계산을 한다. 그룹 1에 대한 면적 중심법을 이용한 그룹의 중심위치 계산은 다음과 같다.

[eqn: bar{x_1} &= (3+3+3+4+4+4+5+5)/8 = 3.875 # bar{y_1} &= (3+3+4+4+4+5+5+5)/8 = 4.125]	(6.14)

각 화소에 대한 좌표는 정수이지만, 계산된 중심 위치는 정수가 아니라 실수이다. 즉, 준화소 (subpixel) 단위로 얻어진다. 그룹 2, 3에 대해서도 이와 같은 방식으로 구할 수 있다.

한편, 이렇게 얻어진 중심위치는 화상배열에서의 위치이므로, 실제 물리적 좌표로 변환시키는 과정이 필요하다. 위의 21×13 화상이 130 cm × 90 cm의 직사각형 모양의 영역에 대응된다고 가정하면, 그룹 1의 실제 물리적 좌표는 다음과 같이 얻어진다.

[eqn: bar{x_r} &= 3.875 over 21 TIMES 130 = 23.99 cm # bar{y_r} &= 90 - 4.125 over 13 TIMES 90 = 61.44 cm]	(6.15)

만약, 320×240 크기의 화상이 주어지고, 130cm×90cm의 로봇 축구경기장 내의 어떤 물체의 위치를 계산하고자 한다면, 다음과 같은 변환이 필요하다. 그림 6.12에서 경기장의 왼쪽 위의 모서리에 대응되는 점 P의 화상배열에서의 위치를 [eqn: (I_{min}, J_{min}`)], 오른쪽 아래의 모서리에 대응되는 점 Q의 위치를 [eqn: (I_{max}, J_{max}`)], 찾고자 하는 물체의 중심위치를 [eqn: (I, J```)], 축구 경기장에서의 실제 물리적 위치를 [eqn: (X, Y``)]라고 하면, 다음과 같은 관계가 성립한다.

[eqn: X &= {{I - I_{min}} ``} over {{I_{max} - I_{min}} } TIMES 130 `~~~```(cm) # Y &= {{J_{max} - J``}} over { {J_{max} - J_{min}} } TIMES 90 `~~~```(cm)]	(6.16)

참고로, 1999년 대회부터 경기장은 [eqn: 170cm times 130cm](골대포함)으로 바뀌었다.

6.5.3 MIRO팀의 예

그림 6.13에 MIRO팀의 로봇 유니폼을 나타내었다. 유니폼의 크기는 [eqn: 8 cm TIMES 8 cm]이다. 각 로봇에 대해 주어진 팀색과 서로 다른 로봇색을 사용한다. MIRO팀이 찾아야 할 최소한의 색수는 공의 색 1개, 팀색 1개, 그리고 로봇색 3개로서 총 5개이다. 물론, 상대팀의 팀색을 찾을 경우에는 상대팀의 팀색이 하나 추가되기 때문에, 총 6가지의 색을 구분할 수 있어야 한다. 각각의 로봇 유니폼에 대해, 팀색과 로봇색의 두 물체들이 존재한다. 각각 색의 위치를 찾는 과정은 6.5.2절의 방법을 따른다. 화상에서, 로봇색에 해당하는 그룹들 중에서 임계 화소수를 넘는 모든 그룹의 위치를 구하고, 마찬가지로 팀색을 나타내는 그룹들 중에서 임계 화소수를 넘는 모든 그룹들의 위치를 구한다. 로봇색과 팀색을 정합하기 위해서, 각 색들 사이의 거리를 구한다. 미리 설정해 놓은 임계거리 이하이면서 최소거리를 갖는 로봇색과 팀색을 서로 짝을 이루게 한다. 오렌지색의 공의 경우에는, 임계값 처리와 그룹핑을 한 후 얻어진 그룹들 중에서 가장 화소수가 많은 그룹이 공을 나타내고 있는 것으로 간주한다. 이렇게 결정된 각 로봇색-팀색의 쌍에 대해, 로봇색의 중심점의 좌표를 [eqn: (X_r , Y_r``` )], 팀색의 중심점의 좌표를 [eqn: (X_t , Y_t ```)]라고 하면, 로봇의 위치 [eqn: (X_c , Y_c ```)]는 다음과 같이 계산된다.

[eqn: X_c &= {(X_r + X_t ```)} OVER 2 # Y_c &= {(Y_r + Y_t ```)} OVER 2]	(6.17)

이렇게 얻어진 [eqn: X_c]와 [eqn: Y_c]를 가지고 로봇의 방향 [eqn: theta``]를  다음 식으로부터 계산할 수 있다.

[eqn: theta &=& theta_o - pi over 4 # &=& tan^{-1} left ( {Y_r - Y_t} over {X_r - X_t} right ) - pi over 4]	(6.18)

여기서 [eqn: 0``<=`` theta ``< ``2pi]의 범위를 가진다.

로봇의 위치와 방향 계산에 대한 이해를 돕기 위해 그림 6.14가 주어진다. 로봇색은 분홍색, 자주색, 보라색을 사용했으며, 팀색은 규정에 의해 파랑색 또는 노랑색이 사용된다. 로봇색과 팀색의 임계거리는 유니폼의 대각선 길이에 해당하는 [eqn: 8 sqrt 2`` cm]로 하였고, 임계 화소수는 15로 하였다. 즉, 15 미만의 화소들을 갖는 그룹들은 잡음에 의한 것으로 간주하여 무시한다.

그림 6.14 로봇의 위치와 방향

처음에 각 로봇과 공의 위치를 찾기 위해서는 화상의 전체 영역에 대한 조사를 수행해야 하므로, 33ms 이상의 처리시간이 소요될 수도 있다. 하지만, 일단 각 물체의 중심위치가 얻어진 후에는, 각 중심위치를 중심으로 갖는 정사각형의 작은 윈도우 영역을 정의하고 매 프레임마다 그 윈도우 영역 내의 화소들만을 검사한다. 그림 6.15에 윈도우 트랙킹 방법을 나타내었다. 즉, 초기에 [eqn: 320 times 240]의 전체 화상 자료에 대한 처리를 통해 각 물체들의 위치를 계산한 후에는, 각각의 물체 주변의 화상 자료들만을 처리함으로서 처리할 자료의 양을 줄임으로써, 처리시간이 감소하므로 33ms 이내에 모든 물체들의 위치나 방향을 구할 수 있다

.

그림 6.15 윈도우 트랙킹

본 장에서는 로봇축구시스템에서 로봇과 공의 위치나 방향 정보를 얻기 위해 사용되는 비전 시스템에 관련된 기본 내용을 설명하고 실례를 들어 이해를 도왔다. 물체의 위치를 계산하기 위해, 임계값 처리를 통해 대상 물체의  색의 화소들을 찾아내고 단순화된 그룹핑과 면적 중심법을 이용하였다. 처리할 화상자료의 양을 줄임으로써 실시간 처리가 가능하도록, 작은 크기의 윈도우를 설정하여 각 물체를 추적하는 방법을 사용하였다. 이 방법의 문제점으로는 찾고자 하는 물체들의 색이 같고 아주 가까이 있으면, 서로 혼동이 일어날 수 있다는 것이다.